/**
 * @param {number[]} nums
 * @return {number}
 */
 var rob = function(nums) {
    if(nums.length==0){
        return 0;
    }
    if(nums.length<=3){
        return Math.max(...nums);
    }
    let dp=new Array(nums.length).fill(0);
    //dp[0]=nums[0];
    dp[1]=nums[1];
    dp[2]=nums[2];
    dp[3]=nums[1]+nums[3]
    let n = nums.length-1;
    //var ret=Math.max(dp[2],dp[1]);
    for(let i=4;i<=n;i++){
        dp[i]=nums[i]+Math.max(dp[i-2],dp[i-3]);
    }
    let temp=Math.max(dp[n],dp[n-1]);
    dp=new Array(nums.length).fill(0);
    dp[0]=nums[0];
    dp[1]=nums[1];
    dp[2]=nums[0]+nums[2];
    for(let i=3;i<n;i++){
        dp[i]=nums[i]+Math.max(dp[i-2],dp[i-3]);
    }
    return Math.max(temp,Math.max(dp[n-1],dp[n-2]));
};

console.log(rob([1,2,1,0]))

// 执行用时：
// 88 ms
// , 在所有 JavaScript 提交中击败了
// 41.69%
// 的用户
// 内存消耗：
// 37.8 MB
// , 在所有 JavaScript 提交中击败了
// 50.81%
// 的用户